package core.collection.mymap;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * map介绍和功能概述
 *
 * map是双列集合，collection是单列集合，set底层是双列集合隐藏掉值的一列
 * map的算法只针对于键有效
 *
 * @author
 * @create 2018-12-23 10:58
 **/
public class mymap_1_Map {
    /**
     * * A:Map集合的功能概述
     * a:添加功能
     * V put(K key,V value):添加元素。
     * 如果键是第一次存储，就直接存储元素，返回null
     * 如果键不是第一次存在，就用值把以前的值替换掉，返回以前的值
     *
     * b:删除功能
     * void clear():移除所有的键值对元素
     * V remove(Object key)：根据键删除键值对元素，并把值返回
     *
     * c:判断功能
     * boolean containsKey(Object key)：判断集合是否包含指定的键
     * boolean containsValue(Object value):判断集合是否包含指定的值
     * boolean isEmpty()：判断集合是否为空
     *
     * d:获取功能
     * Set<Map.Entry<K,V>> entrySet():
     * V get(Object key):根据键获取值
     * Set<K> keySet():获取集合中所有键的集合
     * Collection<V> values():获取集合中所有值的集合
     *
     * e:长度功能
     * int size()：返回集合中的键值对的个数
     */
    public static void main(String[] args){
        //demo_put();
        //demo_remove();
        //demo_contains();
        demo_values();
    }

    public static void demo_put(){
        Map<String,Integer> map = new HashMap<>();
        Integer i = map.put("jac",23);
        //返回的是被覆盖的部分，有jac的时候才会把被覆盖的值返回
        map.put("sdf",23);
        System.out.println(i);
        i = map.put("jac",232);
        System.out.println(i);


        //所以put方法会把被覆盖的值返回
        System.out.println(map);
    }

    public static void demo_remove(){
        Map<String,Integer> map = new HashMap<>();
        map.put("ja",23);
        map.put("jb",24);
        map.put("jc",25);
        Integer i = map.remove("ja");
        //返回被删除的键对应的值
        System.out.println(i);
        System.out.println(map);
    }

    public static void demo_contains(){
        Map<String,Integer> map = new HashMap<>();
        map.put("ja",23);
        map.put("jb",24);
        map.put("jc",25);
        System.out.println(map.containsKey("Ja"));
        System.out.println(map.containsValue(24));
    }

    public static void demo_values(){
        Map<String,Integer> map = new HashMap<>();
        map.put("ja",23);
        map.put("jb",24);
        map.put("jc",25);
        Collection<Integer> c = map.values();
        System.out.println(c);

        System.out.println(map.size());
    }
}
